package PodsumowaniaLingwistyczne;

import csvIO.CsvObject;
import csvIO.CsvRow;

public class Podsumowanie {

	private ISumaryzator sumaryzator;
	private Kwantyfikator kwantyfikator;
	private IKwalifikator kwalifikator;
	private float[] ocena;

	public Podsumowanie(ISumaryzator sumaryzator, Kwantyfikator kwantyfikator) {
		this(sumaryzator, kwantyfikator, null);
	}

	public Podsumowanie(ISumaryzator sumaryzator, Kwantyfikator kwantyfikator, IKwalifikator kwalifikator) {
		super();
		this.sumaryzator = sumaryzator;
		this.kwantyfikator = kwantyfikator;
		this.kwalifikator = kwalifikator;
		this.ocena = new float[12];
	}

	public float[] getOcena(){
		return ocena;
	}
	
	public void setOcena(float[] ocena){
		this.ocena = ocena;
	}
	
	public String getNazwaKwantyfikatora() {
		return kwantyfikator.getEtykieta();
	}

	public Kwantyfikator getKwantyfikator() {
		return kwantyfikator;
	}

	public ISumaryzator getSumaryzator() {
		return sumaryzator;
	}

	public int iloscKrotekSpelniajacychSumaryzator(CsvObject bazaDanych) {
		int licznik = 0;
		if (kwalifikator != null) {
			for (CsvRow krotka : bazaDanych.getRows()) {
				if (Math.min(sumaryzator.getPrzynaleznosc(krotka), kwalifikator.getPrzynaleznosc(krotka)) > 0.0f) {
					licznik++;
				}
			}
		} else {
			for (CsvRow krotka : bazaDanych.getRows()) {
				if (sumaryzator.getPrzynaleznosc(krotka) > 0.0f) {
					licznik++;
				}
			}
		}
		return licznik;
	}

	public int getIloscKrotekSpelniajacychKwalifikator(CsvObject bazaDanych) {
		if (kwalifikator == null) {
			return bazaDanych.getRowsCount();
		}
		int licznik = 0;
		for (CsvRow krotka : bazaDanych.getRows()) {
			if (kwalifikator.getPrzynaleznosc(krotka) > 0.0f) {
				licznik++;
			}
		}
		return licznik;
	}

	public IKwalifikator getKwalifikator() {
		return kwalifikator;
	}
	
	public String toString(){
		
		StringBuilder str = new StringBuilder("");
		str.append(kwantyfikator);
		str.append(" REKORDÓW ");
		if(kwalifikator != null){
			str.append("TAKICH, ŻE ");
			str.append(kwalifikator+" ");
		}
		str.append("JEST/MA ");
		str.append(sumaryzator);
		return str.toString();
	}

}
